<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>函数的内部属性</title>
	</head>
	<body>
		argument和this
	</body>
	<script>
		//简单的递归
	/*	function box (num){
			if(num<=1){
				alert("1")
				return 1;//1次
			}else{
				alert("2");//3次
				return num*box(num-1);//阶乘 4*3*2*1=24
			}
		}
		
		alert("递归="+box(4));//24
		*/
		
		
		/*	function box (num){
			if(num<=1){
			
				return 1;
			}else{
			
				return num*arguments.callee(num-1);//arguments.callee()调用自身  实现递归
			}
		}
		
		alert("递归="+box(4));*/
		
		///////////////////////////////////////////////////////////////
		
		//this 和window相同  windows是最外围的
		//alert(window);  alert(this);  //[object Window]
		//alert(typeof window);  alert(typeof this);//[object ]
		
	//	var color1 ="蓝色的";//这里的color1是全局变量，而这个变量也是Windows的属性
	//	alert(window.color1);alert(this.color1);//蓝色的
		
	/*window.color1="白色的";
		alert(this.color1);//白色的  ,此处this [object Window]
		
		var setColor ={
			color1:"红色的",//这里的color1 是局部变量   属于setColor
			sayColor:function(){
				alert(this);//此处this代表setColor对象 [object Object]
				alert(this.color1);//红色的
			}
		}
		setColor.sayColor();//红色的*/
		
		
		window.color2 ="紫色";
		function sayColor1(){
			alert(this);//[object Window]
			alert(this.color2);//紫色
		}
		sayColor1();//还是在window下
		
		var box2 ={
			color2 :"黑色的"
		};
		box2.sayColor1 = sayColor1;//此处相当于setColor函数，相当于第52行代码
		box2.sayColor1();//黑色的， 此处执行的box2 的内部
	</script>
</html>
